package com.cangheng.app.util;

import java.net.URL;

/** 
 * @ClassName: ClassUtil 
 * @Description: TODO(类操作工具类) 
 * @author grc 
 * @date 2016年4月18日 下午4:02:37 
 * @version 1.0 
 */
public class ClassUtil {

	/**
	 * 获取类加载器
	 */
	public static ClassLoader getClassLoader(){
		return Thread.currentThread().getContextClassLoader();
	}

    /**
     * 获取类路径
     */
	public static String getClassPath(){
		String classPath = "";
		URL resource = getClassLoader().getResource("");
		if (resource != null) {
			classPath = resource.getPath();
		}
		return classPath;
	}
	
    /**
     * 加载类（将自动初始化）
     */
    public static Class<?> loadClass(String className) {
        return loadClass(className, true);
    }
    
    /**
     * 加载类
     */
    public static Class<?> loadClass(String className, boolean isInitialized) {
        Class<?> cls;
        try {
            cls = Class.forName(className, isInitialized, getClassLoader());
        } catch (ClassNotFoundException e) {
//          logger.error("加载类出错！", e);
            System.out.println("加载类出错！");
            throw new RuntimeException(e);
        }
        return cls;
    }
    
    /**
     * 是否为 int 类型（包括 Integer 类型）
     */
    public static boolean isInt(Class<?> clazz) {
        return clazz.equals(int.class) || clazz.equals(Integer.class);
    }

    /**
     * 是否为 long 类型（包括 Long 类型）
     */
    public static boolean isLong(Class<?> clazz) {
        return clazz.equals(long.class) || clazz.equals(Long.class);
    }

    /**
     * 是否为 double 类型（包括 Double 类型）
     */
    public static boolean isDouble(Class<?> clazz) {
        return clazz.equals(double.class) || clazz.equals(Double.class);
    }

    /**
     * 是否为 String 类型
     */
    public static boolean isString(Class<?> clazz) {
        return clazz.equals(String.class);
    }
}
